/**********************************************************************
 * SailmiPIM - modular cross-platform feature Personal Information Manager Tools.
 * Copyright(C) 2011  Georg Rudoy
 *
 * Distributed under the Boost Software License, Version 1.0.
 *(See accompanying file LICENSE or copy at https://www.boost.org/LICENSE_1_0.txt)
 **********************************************************************/

#pragma once

#include <QObject>
#include <QAction>
#include <sailmipim/iinfo.h>
#include <sailmipim/iactionsexporter.h>
#include <sailmipim/ihaveshortcuts.h>

class ICoreTabWidget;

namespace SailmiPIM::Plugin
{
namespace TabsList
{
	class Plugin : public QObject
				 , public IInfo
				 , public IActionsExporter
				 , public IHaveShortcuts
	{
		Q_OBJECT
		Q_INTERFACES(IInfo IActionsExporter IHaveShortcuts)

        SAILMIPIM_PLUGIN_METADATA("com.sailmi.pim.plugin.TabsList")

		ICoreProxy_ptr Proxy_;
		QAction *ShowList_ = nullptr;
	public:
		void Init(ICoreProxy_ptr);
		void SecondInit();
		QByteArray GetUniqueID() const;
		void Release();
		QString GetName() const;
		QString GetInfo() const;
		QIcon GetIcon() const;

		QList<QAction*> GetActions(ActionsEmbedPlace) const;

		QMap<QByteArray, ActionInfo> GetActionInfo() const;
		void SetShortcut(const QByteArray&, const QKeySequences_t&);

		void RemoveTab(ICoreTabWidget*, int);
        bool IsCore() const;
	private slots:
		void handleShowList();
		void navigateToTab();
    signals:
        void gotActions(QList<QAction*>, SailmiPIM::ActionsEmbedPlace);
	};
}
}
